home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 2: CDPD 1 / Almathera Ten on Ten - Disc 2: CDPD 1.iso / pd / 051-075 / 073 / xplor / xplor.asm < prev   
Assembly Source File  |  1995-03-13  |  5KB  |  275 lines

  1. *---------------------------------------------------------------------------
  2. *  XPLOR.ASM
  3. *
  4. *  A program to explore the various structures of the Amiga.
  5. *  Starting with Execbase....
  6. *---------------------------------------------------------------------------
  7.  
  8. begin    jmp    start
  9.  
  10.     include    "macros.basic"
  11.  
  12.     use    libs        ;include library functions
  13.  
  14.     use    doslib        ;All libraries listed will be 
  15. *    use    intib        ;enabled for opening/closing
  16. *    use    gfxlib        ;with the 'dolibs' and 'exit'
  17. *    use    dfontlib    ;macros.
  18. *    use    clistlib
  19. *    use    layerslib
  20. *    use    ffplib
  21. *    use    translib
  22. *    use    mathdoublib
  23. *    use    speechlib
  24. *    use    iconlib
  25.  
  26.     use    b2h    ;binary to hex ASCII
  27.     use    prt    ;print
  28. *    use    scnull    ;scan for NULL
  29. *    use    copy    ;copy memory
  30. *    use    scm    ;compare strings
  31. *    use    sln    ;get length of string
  32. *    use    ins    ;INSTRING function
  33. *    use    dbug    ;debugging routines
  34. *    use    arg    ;arg parser routines
  35.     use    leadspc    ;replace leading ASCII 0 to spaces (ldspc)
  36.     
  37.     include    "macros.opt"
  38.     include "macros.data"
  39.  
  40.     XTRN    Output
  41.     XTRN    Write
  42.     XTRN    Permit
  43.     XTRN    Forbid
  44.  
  45. *--------------
  46. * Subroutines
  47. *--------------
  48.     CNOP    0,4
  49. menu    printz    #menutext
  50.     rts
  51.  
  52. nxtnode    move.l    flink,a0    ;get next node address
  53.     move.l    a0,nodeptr    ; and make it current
  54.     move.l    (a0),flink    ;get new link
  55.     rts
  56.  
  57.  
  58.  
  59. dmplist    cmp.l    #0,flink    ;see if link is zero
  60.     beq    endump        ;if zero, then we are at end of list
  61.  
  62.     move.l    nodeptr,a0    ;get node address
  63.     binhex    a0,buff        ;convert address to hex string
  64.     ldspc    buff        ;remove leading zeros
  65.     printz    #buff        ;print address
  66.     printz    #dash        ;   and separator
  67.     move.l    nodeptr,a0    ;recover address of node
  68.     adda.l    #10,a0        ;point at address of libname
  69.     printz    (a0)        ;print libname
  70.     printz    #newline
  71.     jsr    nxtnode        ;get next node
  72.     bra    dmplist        ; and go back to process
  73. endump    rts
  74.  
  75.  
  76. *--------------
  77. * Main Program
  78. *--------------
  79.     CNOP    0,4
  80.  
  81. start    dolibs            ;open all libraries as per list in 'use'
  82.  
  83.     bne    libsok
  84.     exit    100
  85.  
  86. libsok    call    Forbid(a6)
  87.     move.l    dos,a6
  88.     call    Output(a6)
  89.     move.l    d0,stdout
  90.  
  91.     move.l    (AbsBase),d1    ;get Execbase pointer
  92.     move.l    #9,d0        ;loop counter
  93.     move.l    #exbase,a1    ;start of table of offsets
  94. loop1    add.l    d1,(a1)+    ;generate list addresses
  95.     dbf    d0,loop1    ; in list table
  96.  
  97. main    jsr    menu        ;choose list to look at. (Stub now)
  98.  
  99.  
  100. *--------------------
  101. * Dump library list
  102. *--------------------
  103.  
  104. libr    move.l    (liblist),a0    ;get pointer to library node
  105.     move.l    a0,nodeptr    ; and save it
  106.     move.l    (a0),flink    ;save link to next node
  107.  
  108.     jsr    nxtnode        ;set up for first lib node
  109.  
  110.     jsr    dmplist
  111.  
  112.     printz    #libsdone
  113.  
  114.  
  115. *------------------
  116. * Dump device list
  117. *------------------
  118.  
  119. devs    move.l    (devlist),a0
  120.     move.l    a0,nodeptr
  121.     move.l    (a0),flink
  122.  
  123.     jsr    nxtnode
  124.  
  125.     jsr    dmplist
  126.  
  127.     printz    #devsdone
  128.  
  129.  
  130. *--------------------
  131. * Dump resource list
  132. *--------------------
  133.  
  134. res    move.l    (reslist),a0
  135.     move.l    a0,nodeptr
  136.     move.l    (a0),flink
  137.  
  138.     jsr    nxtnode
  139.  
  140.     jsr    dmplist
  141.  
  142.     printz    #resdone
  143.  
  144.  
  145. *---------------------
  146. * Dump TaskReady list
  147. *---------------------
  148.  
  149. trdy    move.l    (trdylist),a0
  150.     move.l    a0,nodeptr
  151.     move.l    (a0),flink
  152.  
  153.     jsr    nxtnode
  154.  
  155.     jsr    dmplist
  156.  
  157.     printz    #trdydone
  158.  
  159. *----------------------
  160. * Dump Taskwaiting list
  161. *----------------------
  162.  
  163. twait    move.l    (twtlist),a0
  164.     move.l    a0,nodeptr
  165.     move.l    (a0),flink
  166.  
  167.     jsr    nxtnode
  168.  
  169.     jsr    dmplist
  170.  
  171.     printz    #twtdone
  172.  
  173. *----------------------
  174. * Dump Memory list
  175. *----------------------
  176.  
  177. memory    move.l    (memlist),a0
  178.     move.l    a0,nodeptr
  179.     move.l    (a0),flink
  180.  
  181.     jsr    nxtnode
  182.  
  183.     jsr    dmplist
  184.  
  185.     printz    #memdone
  186.  
  187.  
  188. *----------------------
  189. * Dump Memory list
  190. *----------------------
  191.  
  192. irpt    move.l    (intrlist),a0
  193.     move.l    a0,nodeptr
  194.     move.l    (a0),flink
  195.  
  196.     jsr    nxtnode
  197.  
  198.     jsr    dmplist
  199.  
  200.     printz    #irptdone
  201.  
  202.  
  203. *----------------------
  204. * Dump Memory list
  205. *----------------------
  206.  
  207. ports    move.l    (portlist),a0
  208.     move.l    a0,nodeptr
  209.     move.l    (a0),flink
  210.  
  211.     jsr    nxtnode
  212.  
  213.     jsr    dmplist
  214.  
  215.     printz    #portsdone
  216.  
  217.  
  218. *----------------------
  219. * Dump Memory list
  220. *----------------------
  221.  
  222. semlist    move.l    (smlist),a0
  223.     move.l    a0,nodeptr
  224.     move.l    (a0),flink
  225.  
  226.     jsr    nxtnode
  227.  
  228.     jsr    dmplist
  229.  
  230.     printz    #semdone
  231.  
  232. *----------------------
  233.  
  234. done    move.l    AbsBase,a6
  235.     call    Permit(a6)
  236.     exit    0            ;normal return
  237.  
  238.  
  239. *===============================*
  240.     SECTION    BSS
  241.  
  242.     CNOP    0,4
  243. stdout    ds.l    1
  244. flink    ds.l    1
  245. nodeptr    ds.l    1
  246.  
  247.     SECTION    CODE
  248. exbase        dc.l    0    ;Address of Execbase
  249. memlist        dc.l    $142    ;Table of offsets for system lists
  250. reslist        dc.l    $150    ; These are offsets from Execbase
  251. devlist        dc.l    $15e    ; and Execbase will be added to each
  252. intrlist    dc.l    $16c    ; offset to give an absolute address
  253. liblist        dc.l    $17a    ; for the head of each list.
  254. portlist    dc.l    $188
  255. trdylist    dc.l    $196
  256. twtlist        dc.l    $1a4
  257. smlist        dc.l    $214
  258.  
  259. buff        dc.b    '        ',0
  260. dash        dc.b    ' - ',0
  261. newline        dc.b    10,0
  262. libsdone    dc.b    10,'  End of Library list',10,10,0
  263. devsdone    dc.b    10,'  End of Device list',10,10,0
  264. resdone        dc.b    10,'  End of Resource list',10,10,0
  265. trdydone    dc.b    10,'  End of TaskReady list',10,10,0
  266. twtdone        dc.b    10,'  End of TaskWaiting list',10,10,0
  267. memdone        dc.b    10,'  End of Memory list',10,10,0
  268. irptdone    dc.b    10,'  End of Interrupt list',10,10,0
  269. portsdone    dc.b    10,'  End of Port list',10,10,0
  270. semdone        dc.b    10,'  End of Semaphore list',10,10,0
  271. menutext    dc.b    ' Menu stuff.... stub now.',10,10,0
  272.  
  273.     end
  274.